Termination Proof Script

Consider the TRS R consisting of the rewrite rules
1:    app(app(app(if,true),xs),ys)  → xs
2:    app(app(app(if,false),xs),ys)  → ys
3:    app(app(lt,app(s,x)),app(s,y))  → app(app(lt,x),y)
4:    app(app(lt,0),app(s,y))  → true
5:    app(app(lt,y),0)  → false
6:    app(app(eq,x),x)  → true
7:    app(app(eq,app(s,x)),0)  → false
8:    app(app(eq,0),app(s,x))  → false
9:    app(app(merge,xs),nil)  → xs
10:    app(app(merge,nil),ys)  → ys
11:    app(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → app(app(app(if,app(app(lt,x),y)),app(app(cons,x),app(app(merge,xs),app(app(cons,y),ys)))),app(app(app(if,app(app(eq,x),y)),app(app(cons,x),app(app(merge,xs),ys))),app(app(cons,y),app(app(merge,app(app(cons,x),xs)),ys))))
12:    app(app(map,f),nil)  → nil
13:    app(app(map,f),app(app(cons,x),xs))  → app(app(cons,app(f,x)),app(app(map,f),xs))
14:    app(app(mult,0),x)  → 0
15:    app(app(mult,app(s,x)),y)  → app(app(plus,y),app(app(mult,x),y))
16:    app(app(plus,0),x)  → 0
17:    app(app(plus,app(s,x)),y)  → app(s,app(app(plus,x),y))
18:    list1  → app(app(map,app(mult,app(s,app(s,0)))),hamming)
19:    list2  → app(app(map,app(mult,app(s,app(s,app(s,0))))),hamming)
20:    list3  → app(app(map,app(mult,app(s,app(s,app(s,app(s,app(s,0))))))),hamming)
21:    hamming  → app(app(cons,app(s,0)),app(app(merge,list1),app(app(merge,list2),list3)))
There are 62 dependency pairs:
22:    APP(app(lt,app(s,x)),app(s,y))  → APP(app(lt,x),y)
23:    APP(app(lt,app(s,x)),app(s,y))  → APP(lt,x)
24:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(app(if,app(app(lt,x),y)),app(app(cons,x),app(app(merge,xs),app(app(cons,y),ys)))),app(app(app(if,app(app(eq,x),y)),app(app(cons,x),app(app(merge,xs),ys))),app(app(cons,y),app(app(merge,app(app(cons,x),xs)),ys))))
25:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(if,app(app(lt,x),y)),app(app(cons,x),app(app(merge,xs),app(app(cons,y),ys))))
26:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(if,app(app(lt,x),y))
27:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(lt,x),y)
28:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(lt,x)
29:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(cons,x),app(app(merge,xs),app(app(cons,y),ys)))
30:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(merge,xs),app(app(cons,y),ys))
31:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(app(if,app(app(eq,x),y)),app(app(cons,x),app(app(merge,xs),ys))),app(app(cons,y),app(app(merge,app(app(cons,x),xs)),ys)))
32:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(if,app(app(eq,x),y)),app(app(cons,x),app(app(merge,xs),ys)))
33:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(if,app(app(eq,x),y))
34:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(eq,x),y)
35:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(eq,x)
36:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(cons,x),app(app(merge,xs),ys))
37:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(merge,xs),ys)
38:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(merge,xs)
39:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(cons,y),app(app(merge,app(app(cons,x),xs)),ys))
40:    APP(app(merge,app(app(cons,x),xs)),app(app(cons,y),ys))  → APP(app(merge,app(app(cons,x),xs)),ys)
41:    APP(app(map,f),app(app(cons,x),xs))  → APP(app(cons,app(f,x)),app(app(map,f),xs))
42:    APP(app(map,f),app(app(cons,x),xs))  → APP(cons,app(f,x))
43:    APP(app(map,f),app(app(cons,x),xs))  → APP(f,x)
44:    APP(app(map,f),app(app(cons,x),xs))  → APP(app(map,f),xs)
45:    APP(app(mult,app(s,x)),y)  → APP(app(plus,y),app(app(mult,x),y))
46:    APP(app(mult,app(s,x)),y)  → APP(plus,y)
47:    APP(app(mult,app(s,x)),y)  → APP(app(mult,x),y)
48:    APP(app(mult,app(s,x)),y)  → APP(mult,x)
49:    APP(app(plus,app(s,x)),y)  → APP(s,app(app(plus,x),y))
50:    APP(app(plus,app(s,x)),y)  → APP(app(plus,x),y)
51:    APP(app(plus,app(s,x)),y)  → APP(plus,x)
52:    LIST1  → APP(app(map,app(mult,app(s,app(s,0)))),hamming)
53:    LIST1  → APP(map,app(mult,app(s,app(s,0))))
54:    LIST1  → APP(mult,app(s,app(s,0)))
55:    LIST1  → APP(s,app(s,0))
56:    LIST1  → APP(s,0)
57:    LIST1  → HAMMING
58:    LIST2  → APP(app(map,app(mult,app(s,app(s,app(s,0))))),hamming)
59:    LIST2  → APP(map,app(mult,app(s,app(s,app(s,0)))))
60:    LIST2  → APP(mult,app(s,app(s,app(s,0))))
61:    LIST2  → APP(s,app(s,app(s,0)))
62:    LIST2  → APP(s,app(s,0))
63:    LIST2  → APP(s,0)
64:    LIST2  → HAMMING
65:    LIST3  → APP(app(map,app(mult,app(s,app(s,app(s,app(s,app(s,0))))))),hamming)
66:    LIST3  → APP(map,app(mult,app(s,app(s,app(s,app(s,app(s,0)))))))
67:    LIST3  → APP(mult,app(s,app(s,app(s,app(s,app(s,0))))))
68:    LIST3  → APP(s,app(s,app(s,app(s,app(s,0)))))
69:    LIST3  → APP(s,app(s,app(s,app(s,0))))
70:    LIST3  → APP(s,app(s,app(s,0)))
71:    LIST3  → APP(s,app(s,0))
72:    LIST3  → APP(s,0)
73:    LIST3  → HAMMING
74:    HAMMING  → APP(app(cons,app(s,0)),app(app(merge,list1),app(app(merge,list2),list3)))
75:    HAMMING  → APP(cons,app(s,0))
76:    HAMMING  → APP(s,0)
77:    HAMMING  → APP(app(merge,list1),app(app(merge,list2),list3))
78:    HAMMING  → APP(merge,list1)
79:    HAMMING  → LIST1
80:    HAMMING  → APP(app(merge,list2),list3)
81:    HAMMING  → APP(merge,list2)
82:    HAMMING  → LIST2
83:    HAMMING  → LIST3
The approximated dependency graph contains 2 SCCs: {22,24,25,27,29-32,34,36,37,39-41,43-45,47,50} and {57,64,73,79,82,83}.
Tyrolean Termination Tool  (104.89 seconds)   ---  May 3, 2006